package com.share.ai.langchain4j.config;

import dev.langchain4j.service.*;

//定义一个接口,MemoryReqAndRspConfig 会帮我们生成代理bean
// String chat(@MemoryId String memoryId, @UserMessage String query); 2个参数需要指定注解
// String chat(String query); //不需要指定注解
public interface ChatAssistant {
    /**
     * 常规对话----
     *
     * @param memoryId 由用户id +  会话id 组成
     * @param query    用户的问题
     * @return
     */
    String chat(@MemoryId String memoryId, @UserMessage String query);

    /**
     * 流式对话
     *
     * @param memoryId 由用户id +  会话id 组成
     * @param query    用户的问题
     * @return
     */
    TokenStream streamChat(@MemoryId String memoryId, @UserMessage String query);

    //调用streamChat方法时,我们设置currentDate,这样消息就可以动态通知到模型
    //SystemMessage 的作用告诉ai我们当前它是什么角色,这样方便它提取信息并回答问题
    @SystemMessage("""
            你好，我是航班助手,请问有啥可以帮助你的。
            请将中文。
            今天的日期是{{currentDate}}
            """)
    TokenStream streamChat(@MemoryId String memoryId, @UserMessage String query, @V("currentDate") String currentDate);
}
